package com.zx.flow.db.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zx.flow.api.dict.FlowDict;
import com.zx.flow.api.dict.FlowDict.Status;
import com.zx.flow.db.typehandler.FlowStatusTypeHandler;
import java.util.Date;
import lombok.Data;

/**
 * 流程上下文
 */
@Data
@TableName(value = "flow_context", autoResultMap = true)
public class FlowContextEntity {

    /**
     * id，全局唯一，工单号
     */
    @TableId(type = IdType.ASSIGN_UUID)
    private String id;

    /**
     * 流程标题
     */
    private String title;

    /**
     * 流程id,自动生成，全局唯一
     */
    private String flowConfigId;

    private String flowConfigCode;

    /**
     * 流程状态
     * {@link FlowDict.Status}
     */
    @TableField(typeHandler = FlowStatusTypeHandler.class)
    private Status status;

    /**
     * 开始时间
     */
    private Date startDateTime;

    /**
     * 结束时间
     */
    private Date endDateTime;

    /**
     * 流程上下文，自定义数据
     */
    private String extendData;

    /**
     * 申请原因
     */
    private String applyReason;

    /**
     * 申请人账号
     */
    private String applyAccountCode;

    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    /**
     * 当前节点编号
     */
    private String currentNodeCode;

    /**
     * 父流程ID
     */
    private String parentFlowId;
    private String parentNodeId;

}
